package com.session04.am.frames;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class LoginFrame extends JFrame {
    private JTextField txtName;
    private JPasswordField txtPwd;
    private int num = 0;

    String user = "admin";
    String pwd = "123456";

    public LoginFrame() {
        this.setTitle("登陆窗口");
        this.setBounds(300, 100, 300, 200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //swing窗口有默认的布局管理器
        //常用的布局管理器 BorderLayout  FlowLayout  GridLayout CardLayout null
        // null 布局  ---- 自定义布局，简单来说自己需要定义每个控件位置和大小
        // this.setLayout(null);

        //BorderLayout 边框布局 默认的布局 东南西北中布局,默认放在中间，而且这个布局每个位置只能放一个控件
        //FlowLayout 流式布局 和css的float相似，依次排列，如果一行放不下，就会挤到下一行，
        //流式布局里面的控件，都默认没有尺寸，尺寸的大小由控件中的内容决定
        //this.setLayout(new FlowLayout());
        //网格布局 GridLayout 一句网格依次排列

        //前两个参数表示几行几列
        //后两个参数表示水平和垂直的间隔

        this.setLayout(new GridLayout(3, 1, 5, 5));

        //容器组件，这个组件专门用来放其他组件的
        //JPanel 有布局管理器，默认是流式布局
        JPanel p1 = new JPanel();
        JLabel lblName = new JLabel("姓名");
        txtName = new JTextField(15);

        //边框布局放入不同的方向位置
        p1.add(lblName);
        p1.add(txtName);

        JPanel p2 = new JPanel();
        JLabel lblPwd = new JLabel("密码");
        txtPwd = new JPasswordField(15);
        p2.add(lblPwd);
        p2.add(txtPwd);

        JPanel p3 = new JPanel();
        JButton btnLogin = new JButton("登录");
        JButton btnCancel = new JButton("取消");
        p3.add(btnLogin);
        p3.add(btnCancel);

        //内部类
        //btnLogin.addActionListener(new MyInnerActionListener());

        //匿名内部类
        btnLogin.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String username = txtName.getText();
                String password = new String(txtPwd.getPassword());

                if (username.equals(user) && password.equals(pwd)) {
                    JOptionPane.showConfirmDialog(null, "登陆成功");

                    ChatFrame chatFrame = new ChatFrame();
                    //LoginFrame.this.dispose();
                    dispose();
                } else {
                    JOptionPane.showMessageDialog(null, "用户名或密码错误");
                    txtName.setText("");
                    txtPwd.setText("");
                    num++;
                }

                if (num == 3) {
                    JOptionPane.showConfirmDialog(null, "3次尝试机会已使用完，退出登陆");
                    System.exit(0);
                }
            }
        });

        this.add(p1);
        this.add(p2);
        this.add(p3);
        this.setVisible(true);

    }

    public class MyInnerActionListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            String username = txtName.getText();
            String password = new String(txtPwd.getPassword());
            JOptionPane.showConfirmDialog(null, username + "---" + password);
        }
    }

    public static void main(String[] args) {
        LoginFrame loginFrame = new LoginFrame();
    }
}
